package com.stylefeng.guns.modular.system.model;

import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import com.stylefeng.guns.core.validater.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * <p>
 * 系统组织机构
 * </p>
 *
 * @author stylefeng
 * @since 2018-08-24
 */
@Data
@EqualsAndHashCode(callSuper=true)
@TableName("sys_org")
@ApiModel(value = "组织机构类", description = "系统组织机构")
public class Org extends Model<Org> {

    private static final long serialVersionUID = 1L;

    /**
     * 机构编号
     */
    @TableId(value = "so_id", type= IdType.AUTO)
    @ApiModelProperty(value = "机构编号")
    @NotNull(message = "机构编号不能为空",groups = Update.class)
    private Integer soId;
    /**
     * 机构全称
     */
    @TableField("so_name")
    @ApiModelProperty(value = "机构全称")
    @NotNull(message = "机构全称不能为空")
    private String soName;
    /**
     * 机构拼音码
     */
    @TableField("so_name_py")
    @ApiModelProperty(value = "机构拼音码")
    private String soNamePy;
    
    @ApiModelProperty(value = "机构全拼")
    @TableField("so_name_py_all")
    private String soNamePyAll;
    
    @ApiModelProperty(value = "机构拼音首字母")
    @TableField("so_name_py_first")
    private String soNamePyFirst;
    
    /**
     * 父机构
     */
    @ApiModelProperty(value = "父机构ID")
    @TableField("so_pid")
    private Integer soPid;
    
    /**
     * 机构类型
     */
    @ApiModelProperty(value = "机构类型")
    @TableField("so_type")
    @NotNull(message = "机构类型不能为空!")
    private String soType;
    
    /**
     * 机构分类
     */
    @ApiModelProperty(value = "机构分类")
    @TableField("so_cate")
    @NotNull(message = "机构分类不能为空!")
    private String soCate;


    /**
     * 父级ID集
     */
    @ApiModelProperty(value = "父级ID集")
    @TableField("so_pids")
    private String soPids;
    /**
     * 机构路径
     */
    @TableField("so_path")
    @ApiModelProperty(value = "机构路径")
    private String soPath;
    /**
     * 机构级次
     */
    @TableField("so_level")
    @ApiModelProperty(value = "机构级次")
    private Integer soLevel;
    /**
     * 所属区划
     */
    @TableField("so_area")
    @ApiModelProperty(value = "所属区划")
    private String soArea;
    /**
     * 负责人
     */
    @TableField("so_main_psn")
    @ApiModelProperty(value = "负责人")
    private String soMainPsn;
    /**
     * 负责人电话
     */
    @TableField("so_main_psn_phone")
    @ApiModelProperty(value = "负责人电话")
    private String soMainPsnPhone;
    /**
     * 机构地址
     */
    @TableField("so_addr")
    @ApiModelProperty(value = "机构地址")
    private String soAddr;
    /**
     * 机构位置
     */
    @TableField("so_lnglat")
    @ApiModelProperty(value = "机构位置")
    private String soLnglat;
    /**
     * 机构排序
     */
    @TableField("so_sort")
    @ApiModelProperty(value = "机构排序")
    private Integer soSort;
    /**
     * 机构状态
     */
    @TableField("so_state")
    @ApiModelProperty(value = "机构状态")
    private String soState;
    /**
     * 机构备注
     */
    @TableField("so_remark")
    @ApiModelProperty(value = "机构备注")
    private String soRemark;
    /**
     * 创建人
     */
    @TableField("create_user")
    @ApiModelProperty(value = "创建人",hidden = true)
    private String createUser;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty(value = "创建时间",hidden = true)
    private Date createTime;
    /**
     * 修改人
     */
    @TableField("update_user")
    @ApiModelProperty(value = "修改人",hidden = true)
    private String updateUser;
    /**
     * 修改时间
     */
    @TableField("update_time")
    @ApiModelProperty(value = "修改时间",hidden = true)
    private Date updateTime;

    @Override
    protected Serializable pkVal() {
        return this.soId;
    }

}
